#if !defined (UTIL_H)
#define UTIL_H
/*
============================================================================
Praeprozessoranweisungen
============================================================================
*/
#define _CRT_SECURE_NO_DEPRECATE 1

#include <stdio.h>
#include <stdlib.h> /* anm. der quelle: Achtung, wird auch in GPreis_3.c eingebunden! */
#include <string.h> /* wird sie gebraucht? */
#include <math.h>   /* fuer absolutfkt */

#define OK            0 /*not used*/
#define NOTOK        -1

#define FALSE          0
#define TRUE           1

#define NO_OF_ROWS     8
#define NO_OF_COLS     8

#define B_NO_OF_ROWS   10
#define B_NO_OF_COLS   10

#define ROW            0
#define COL            1

#define START          0
#define TARGET         1

#define ID_CHECKERS    1

#ifdef __unix__
    #define FIELD_A        '-'
    #define FIELD_B        '-'
    #define FIELD_BORDER_A '-'
    #define FIELD_BORDER_B '-'
    #define FIELD_BORDER_C '-'
#else
    #define FIELD_A        '\xB0'
    #define FIELD_B        '\xB1'
    #define FIELD_BORDER_A '\xC5'
    #define FIELD_BORDER_B '\xB3'
    #define FIELD_BORDER_C '\xC4'
#endif

/* Compiler und Systemspezifische Funktionen */
#ifdef __unix__
   #define clrscr() printf("\x1B[2J")
#elif __BORLANDC__ && __MSDOS__
   #include <conio.h>
#elif __WIN32__ || _MSC_VER
   #define clrscr() system("cls")
#else
   #define clrscr() printf("clrscr() - Fehler!!\n")
#endif

/*
============================================================================
Funktionsprototypen
============================================================================
*/
// Parameter-Reihenfolge: aiBoard, aiMove, iPlayer

char changeNumberToToken(int iNumber);
int  changePlayer(int iPlayer);

int  checkGameStatus(       int iPlayer);
int  checkIsTokenFromPlayer(int aiStart[2][2], int iPlayer);
int  checkMove(             int aiMove[2][2],  int iPlayer, int iShowErrors);
int  checkMovePossible(     int aiStart[2][2], int iPlayer);
int  checkMoveQueue(        int aiMove[2][2],  int iPlayer);


void FillFirst2Lines(void);
void FillFirst2Columns(void);
int  getMove(int aiMove[2][2]);
int  initCheckers(void);
int  kickToken(int aiMove[2][2], int iPlayer);
void moveToken(int aiMove[2][2], int iPlayer);
int  printBoard(void);
int  renderCheckers(void);

/* 
   ============================================================================
   Externe Variablen
   ============================================================================ 
*/
extern int  aiBoard[NO_OF_ROWS][NO_OF_COLS];
extern char acSchachbrett[B_NO_OF_ROWS][B_NO_OF_COLS];
extern char acErrorMsg[1024];
extern char acEvent[1024];
extern char acBenutzernameEins[1024];
extern char acBenutzernameZwei[1024];

#endif
